package com.testing.mysql;

import java.sql.*;
import java.util.*;

public class MysqlTest {
    public static void main(String[] args) throws Exception {
        //加载jdbc驱动
        Class.forName("com.mysql.jdbc.Driver");
        //创建连接，连接mysql数据库,url格式：jdbc:mysql://ip:port/数据库名?参数
        Connection roycon = DriverManager.getConnection(
                "jdbc:mysql://192.168.95.134:3306/test_project?useSSL=false&useUnicode=true&characterEncoding=utf-8",
                "root", "roy123456");
        //连接中新建查询
        Statement royst = roycon.createStatement();
        //查询执行sql语句，得到结果集
        ResultSet royrs = royst.executeQuery("select * from userinfo #where username='roy' and pwd='12345678'");
        //如果有内容，则登录成功，如果没有，登录失败
        //这个next()方法，既判断是否有值，也取值，相当于一次性完成Iterator中的hasNext()和next（）
//        if(royrs.next()){
//            System.out.println("登录成功");
//        }
//        else{
//            System.out.println("登录失败");
//        }

        //取所有的值：
//        while(royrs.next()){
//            System.out.println(royrs.getString("username") + royrs.getString("pwd")+royrs.getString("describe"));
//        }

        //将所有的列名和每行数据存储起来：map存储每一行的键值对，然后一起丢到一个list里面。
        //先获取结果集元信息，也就是表头内容
        ResultSetMetaData roymt = royrs.getMetaData();
        List<Map<String, String>> allData = new ArrayList<>();
        int count = 1;
        //每一行数据
        while(royrs.next()){

            Map<String,String> lineData=new HashMap<>();
            //metadata从1开始取index。
            for(int i=1;i<=roymt.getColumnCount();i++){
                //存储表头信息每一列的列名和这一行对应的值到map里面
                lineData.put(roymt.getColumnName(i),royrs.getString(roymt.getColumnName(i)));
            }
            System.out.println("第"+count+"行的内容是"+lineData);
            //添加map到list中
            allData.add(lineData);
            count++;
        }
        System.out.println("所有的数据是"+allData);
        royrs.close();
        royst.close();
        roycon.close();

    }
}
